本系列文資料可參考以下:
既然 Puppet 手握整個 infrastructure 的生殺大權,那麼 Puppet 的設定會是一整間公司的命脈,萬一寫錯某個>設定可能就會造成專案無法運作,嚴重甚至整間公司都發生問題。
事前的測試將會是預防發生錯誤最好的方法,由於是 Code,所以我們可以用測試工具來寫 Test case,目前應用到
的主流工具:
puppet-lint
是用來測試 puppet code 的 coding style 套件,內建許多 puppet 應該要遵守的 style guide
。
除了檢測以外,puppet-lint
還可以直接替你 fix 有格式不正確的部份,自動調整格式或是補上該有的字元。
puppet-lint
可以直接用 gem
安裝
$ gem install puppet-lint
拿去餵 module 的路徑就可以測。
$ puppet-lint /etc/puppet/modules
Unit test
最推薦的測試工具,這算是單機測試中最重要的一環,
gem
安裝 rspec-puppet
$ gem install rspec-puppet
範例 rspec-puppet 的作法
# role_spec.rb
require 'spec_helper'
describe 'role::base' do
context 'with defaults for all parameters' do
let(:facts) { global_facts }
it do
should contain_class('profile::base')
should contain_class('profile::users')
end
end
end
這個範例會測試有 include 以下 class
是 rspec
跟 beaker
的橋樑,同時也集成 serverspec
acceptance test
驗收測試是所有測試中的最後一環,對於 Puppet 中非常重要,因為 Puppet 提供多種不同 OS 環境的支援,但 Unit Test 僅能測試 function,但不同的環境上仍有疑慮,beaker
可以讓你在多個虛擬環境中執行命令來進行 puppet
實際的佈署。
gem
安裝 beaker
$ gem install beaker
serverspec
則是用來啟動虛擬環境,支援 Docker
和 Vagrant
來處理虛擬環境。
gem
安裝 serverspec
$ gem install serverspec
上述這三個 Test case tools 是目前在 Puppet 上最主流的工具,能夠應付目前所有的測試。
若整個 infrastructure 也能 100% 測試,那麼還擔心你的環境出錯嗎 ?